微服务(网关)的发展
Cloud Native
微服务从单点支持向平台解决方案发展,例如 SpringCloud 解决方案、 Kubernetes 体系。
开源和商业产品融合得更加紧密,云原生的发展让技术从业者有了更多的选择。
2013 ZUUL:Netflix 开源的负载均衡组件,简单易上手,不过早期的 ZUUL 1 性能上限稍低。 2015 KONG:基于 Nginx 的 API 网关,性能强劲,Lua 国内开发者相对较少。 2016 SpringCloud Gateway:网关开始作为整个微服务解决方案的门面出现。 2019 Ambasssador(现在更名 Emissaey-ingress):支持 Kubernetes ingress 标准,且与 Istio 无缝集成。
拆分了微服务后相应的构建部署工作量开始翻倍,运维压力急剧提升; 随着业务迭代,微服务之间调用链路变的复杂,强弱依赖不清晰,故障/瓶颈排查困难; 不同业务团队使用异构的服务框架或技术栈,相互依赖集成成本增加。
不过 Kubernetes 以其完整的网络、服务、负载均衡的标准定义似乎解决了我们不少问题。
统一的服务定义及服务发现机制
负载均衡 Ingress 标准
技术趋势及痛点
Cloud Native
上图展示了在代码中通常包括三部分:业务代码、三方软件、处理非功能特性的代码。其中“业务代码”指实现业务逻辑的代码;“三方软件”是业务代码中依赖的所有三方库,包括业务库和基础库;“处理非功能性的代码”指实现高可用、安全、可观测性等非功能性能力的代码。 从技术的角度,云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、 可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。
简单的拆分
服务发现机制
Sidecar代理流量
云原生架构成熟度模型 & API 安全质量报告
在云原生时代,云原生微服务体系将充分利用云资源的高可用和安全体系,让应用获得更有保障的弹性、 可用性与安全性。应用构建在云所提供的基础设施与基础服务之上,充分利用云服务所带来的便捷性、稳定性, 降低应用架构的复杂度。云原生的微服务体系也将帮助应用架构全面升级,让应用天然具有更好的可观测性、 可控制性、可容错性等特性。
极致弹性:应对突发流量,弹性能力是重要的手段,是否极致对应着故障的恢复速度,弹性能力有时候还依赖于服务化程度。 可观测体验:能够应对突发流量后开始关注性能优化及故障处理,体系化的可观测体验及指标数据对我们的治理工作至关重要。 故障无感自愈:能够 360 度发现问题就能总结规律制定常用的预案及检查机制,常规故障即可自动化恢复。
怎么发现当前微服务架构的问题? Kubernetes Ingress 后面再部署微服务网关影响性能吗?
用户登录鉴权逻辑能否集中处理/升级? 多个 Kubernetes 集群是否可以共用一个网关? 同时使用 SpringCloud 和 Kubernetes svc 怎么灰度?
云原生网关的优势
Cloud Native
开箱即用, 默认支持全局看板、实例监控、日志检索、业务 TOP 榜、日志投递、链路追踪及报警管理等体系化可观测能力,让你轻松了解微服务及 API 质量情况。
卓越的性能,详见下文性能更强劲。
支持 Ingress 标准,Kubernetes 体系首选网关产品。
多种服务发现,支持 ACK 容器服务、Nacos 等多种服务发现方式,可以同时接入多个 Kubernetes 集群。
基于 envoy+istio 实现,完美兼容服务网格,技术大势所趋。
云原生网关的 TPS 基本是 SpringCloud Gateway 的 2 倍,是Zuul 1 的 5 倍。 云原生网关的 TPS 相比 Nginx Ingress 高出约 90%。
自内部 2020.5 上线,云原生网关已在支付宝、钉钉、淘宝、天猫、优酷、飞猪、口碑等阿里各业务系统中使用,两年以来可用率 100%,无任何故障。 历经 2020、2021 双 11 海量请求的考验,大促日可轻松承载每秒承载数 10 万笔请求,日请求量达到百亿级别。
相关链接
Cloud Native
https://martinfowler.com/articles/microservices.html
https://kubernetes.io/docs/concepts/workloads/pods/
点击文末“阅读原文”,了解更多详情~